﻿import os
from fastapi.staticfiles import StaticFiles
import uvicorn
from fastapi import FastAPI
from starlette.middleware.cors import CORSMiddleware  # 引入 CORS中间件模块
from loguru import logger
from manager.module_manager import ModuleManager

from model.hotfix_module import HotfixModule
from model.hotfix_version import HotfixVersion

logger.add(
    sink="./logs/{time:YYYY-MM-DD}.log",
    # format = "{time:HH:mm:ss} {level} {message}",
    level="INFO",
    rotation="00:00",
)

app = FastAPI()
# 设置允许访问的域名
origins = ["*"]  # 也可以设置为"*"，即为所有。

# 设置跨域传参
app.add_middleware(
    CORSMiddleware,
    allow_origins=origins,  # 设置允许的origins来源
    allow_credentials=True,
    allow_methods=["*"],  # 设置允许跨域的http方法，比如 get、post、put等。
    allow_headers=["*"],
)  # 允许跨域的headers，可以用来鉴别来源等作用。

# 设置静态资源路径

if not os.path.exists("./assets"):
    os.makedirs("./assets")
app.mount("/assets", StaticFiles(directory="assets"), name="assets")

module_manager: ModuleManager = ModuleManager()


@app.get("/api/pyhotfix/module/laetst/")
def laetst_module(module_name: str):
    logger.info(f"request laetst_module: {module_name}")
    module: HotfixModule = module_manager.get_laetst_module(module_name)
    if module is None:
        return {"code": -1, "msg": "module not found"}

    return {
        "code": 0,
        "msg": "success",
        "data": {
            "name": module.name,
            "version": str(module.version),
            "launch_code": module.launch_code,
            "zip_url": module.zip_url(),
            "requirements": module.requirements(),
        },
    }


if __name__ == "__main__":
    module_manager.init()
    uvicorn.run(app, host="0.0.0.0", port=4999)
